/**
 * 动态规划升级版，只用一个变量记录最大值
 * @param {number[]} nums
 * @return {number}
 */


const maxSubArray = nums => {

  let sum = nums[0], max = sum

  for (let i = 1; i < nums.length; i++) {
    if (sum >= 0) {
      sum += nums[i]
    } else {
      sum = nums[i]
    }

    max = Math.max(max, sum)
  }
  return max
}

console.log(maxSubArray([-2, 1, -3, 4, -1, 2, 1, -5, 4]))